package cn.hxsteel.purview.model.bo;

import java.util.ArrayList;
import java.util.List;

/**
 * 权限的业务类
 */
public class ModuleBO
{
    private String   id;
    private int      icon;
    private String   name        = "";
    private String   uri         = "";
    private int      rank;
    private int      array;
    private boolean  lockState;
    ModuleBO         parentModule;
    List< ModuleBO > childModule = new ArrayList< ModuleBO >();
    List< ActionBO > action      = new ArrayList< ActionBO >();
    
    /**
     * 模块标识
     */
    public String getId()
    {
	return id;
    }
    
    /**
     * 模块标识
     */
    public void setId( String id )
    {
	this.id = id;
    }
    
    /**
     * 模块图标标识
     */
    public int getIcon()
    {
	return icon;
    }
    
    /**
     * 模块图标标识
     */
    public void setIcon( int icon )
    {
	this.icon = icon;
    }
    
    /**
     * 模块名称
     */
    public String getName()
    {
	return name;
    }
    
    /**
     * 模块名称
     */
    public void setName( String name )
    {
	this.name = name;
    }
    
    /**
     * 模块的资源地址
     */
    public String getUri()
    {
	return uri;
    }
    
    /**
     * 模块的资源地址
     */
    public void setUri( String uri )
    {
	this.uri = uri;
    }
    
    /**
     * 模块的层级
     */
    public int getRank()
    {
	return rank;
    }
    
    /**
     * 模块的层级
     */
    public void setRank( int rank )
    {
	this.rank = rank;
    }
    
    /**
     * 模块的排列
     */
    public int getArray()
    {
	return array;
    }
    
    /**
     * 模块的排列
     */
    public void setArray( int array )
    {
	this.array = array;
    }
    
    /**
     * 模块的锁定状态
     */
    public boolean isLockState()
    {
	return lockState;
    }
    
    /**
     * 模块的锁定状态
     */
    public void setLockState( boolean lockState )
    {
	this.lockState = lockState;
    }
    
    /**
     * 上级模块
     */
    public ModuleBO getParentModule()
    {
	return parentModule;
    }
    
    /**
     * 上级模块
     */
    public void setParentModule( ModuleBO parentModule )
    {
	this.parentModule = parentModule;
    }
    
    /**
     * 下级模块
     */
    public List< ModuleBO > getChildModule()
    {
	return childModule;
    }
    
    /**
     * 下级模块
     */
    public void setChildModule( List< ModuleBO > childModule )
    {
	this.childModule = childModule;
    }
    
    /**
     * 动作
     */
    public List< ActionBO > getAction()
    {
	return action;
    }
    
    /**
     * 动作
     */
    public void setAction( List< ActionBO > action )
    {
	this.action = action;
    }
    
    /**
     * 比较对象
     * 
     * @param o 对象实例
     * @return
     */
    public int compareTo( ModuleBO o )
    {
	if ( o == null )
	{
	    return -1;
	}
	else if ( o == this )
	{
	    return 0;
	}
	else if ( this.array < o.getArray() )
	{
	    return -1;
	}
	else if ( this.array > o.getArray() )
	{
	    return 1;
	}
	else if ( this.array == o.getArray() ) { return this.id.compareTo( o.getId() ); }
	
	return 0;
    }
}